package generics;

public class IMessageTest3 {
    public static void main(String[] args) {
//        IMessage<String> message = new IMessageTest1<>();
//        message.print("abc");
//        IMessage<Integer> message1 = new IMessageTest1<>();
//        message1.print(123);
//        IMessage<String> message2 = new IMessageTest2();
//        message2.print("abc");
//        IMessage<String> msg=new IMessageTest1<>();
//        fun(msg);
//        IMessage<Double> msg1=new IMessageTest1<>();
//        fun(msg1);
        IMessage<String> msg1=new IMessageTest1<>();
        msg1.setMessage("小熊");
        IMessage<Integer> msg2=new IMessageTest1<>();
        msg2.setMessage(123);
        fun3(msg1);
    }



    public static void fun3(IMessage<? super String> msg){
        msg.setMessage("大熊");
        System.out.println(msg.getMessage());
    }

    public static void fun2(IMessage<? extends Number> msg){
        System.out.println(msg.getMessage());
    }

    public static  void  fun1(IMessage<?> msg){
        System.out.println(msg.getMessage());
    }


    public static void fun(IMessage<String> msg){
        msg.print("abc");
    }


}


